// AnaModal.js
const { Modal, Input } = antd;
const { useState } = React;

export default function AnaModal(props) {
  const { children, title = 'AnaModal', trigger = 'Open', width = 520, ...rest } = props;
  const [visible, setVisible] = useState(false);

  const show = () => setVisible(true);
  const hide = () => setVisible(false);

  const [txtVal, setTxtVal] = useState('')

  const onChange = (v) =>{
    setTxtVal(v)
  }

  const onClick = () => {
    let article = txtVal
    const prompt = `
请分析以下故事文本，并按照以下结构精确拆解其核心梗：
 
1. 故事概要
 
用1-2句话总结故事的主要内容。
 
2. 核心梗精准表述
 
用一句话精确提炼出故事的核心梗，捕捉故事最关键的转折或冲突点。
（例如："一向惜命的爸爸听了悄悄话忽然自杀了"）
 
3. 核心梗点
 
识别出让故事产生强烈冲突或转折的关键元素。
 
4. 逻辑结构分析

- 常规事件：故事中看似普通的行为或情景
- 极端结果：与常规事件不成比例的极端后果
- 逻辑链接点：促使常规事件导致极端结果的关键转折点
 
5. 元素分类
 
- 可动部分：可以替换而不影响故事核心逻辑的元素（如人物、具体事件、场景）
- 不可动部分：构成故事核心逻辑的必要元素（如因果关系结构、情感冲突类型）
 
6. 核心梗公式
 
用简洁的公式表达故事的核心运作机制。
例如：[常规事件] + [转折点] = [极端结果] → [核心梗]
 
请基于上述结构，拆解以下故事文本：
${article}    
    `

    $.copyToClipboard(prompt)
  }

  const emotional_curve = () => {
    let article = txtVal
    const prompt = `
请对以下作品进行深度情绪曲线与叙事结构分析，重点关注“埋伏笔-引爆点-碾压式反转-余波快感”模式的应用。分析应包含以下维度：
 
1. 分形叙事结构分析
 
分别剖析作品的：
 
- 宏观结构：整部作品的情绪曲线和主要叙事弧
- 中观结构：每个主要章节/段落的情绪循环
- 微观结构：关键场景内部的小周期情绪变化
 
2. 多维情绪图谱需求
 
请创建交互式HTML图表，展示：
 
- 主要情绪曲线：主角从压抑到反转再到碾压的情绪变化
- 对立曲线：反派/对手的势能变化曲线
- 读者预期差：读者预期与故事实际发展的差异度
- 信息不对称度：角色与读者之间的知情度差异
 
3. 叙事技巧标记
 
在图表中标注以下关键点：
 
- 伏笔埋设点：故事中暗示主角底牌/实力的关键线索
- 误导性铺垫：引导读者形成错误预期的设计
- 引爆触发点：促使主角开始反击的关键事件
- 碾压式反转：主角展示真实力量/身份的高潮时刻
- 余波满足点：反派/对手面对失败的反应及结局
 
4. 读者心理分析
 
分析作品如何操控读者心理：
 
- 压抑期：如何让读者产生共情和期待
- 反转前兆：何时开始暗示读者情绪转变
- 爽感提供：如何最大化读者的复仇快感体验
- 余韵延长：如何延长读者的满足感
 
5. 图表呈现要求
 
创建一个含以下元素的HTML情绪曲线图：
 
- 使用折线图表示各情绪维度变化
- X轴为故事时间线，标记关键情节点
- Y轴为情绪/张力强度（0-100）
- 图例清晰区分各条曲线
- 添加交互式提示框，悬停时显示具体情节点
- 高亮叙事结构的关键转折点
- 使用色彩编码区分不同情绪状态
- 标注“埋伏笔-引爆点-碾压式反转-余波快感”循环周期
 
6. 叙事效能评估
 
评估作品在以下方面的效能：
 
- 情绪调动效率：从低谷到高潮的转化速度
- 伏笔利用率：早期设置的伏笔在后期的兑现程度
- 反转冲击力：情绪反转的强度与突然性
- 满足度持续性：爽感的延续时间与余韵
 

请基于上述结构，拆解以下故事文本, 并提供一份深入、专业且直观的分析，
帮助我理解作品的情绪设计与叙事结构如何协同工作，创造出高效的爽文阅读体验，同时提供HTML的情绪曲线（折线图形式）    ：
${article}
    `

    $.copyToClipboard(prompt)
  }

  const genPlot = () => {

    const prompt = `
    基于核心梗，生成剧情
    核心梗：
    ${txtVal}
    `

    $.copyToClipboard(prompt)
  }

  const genShortPlot = () => {
    const prompt = `
    随机选择一个网文核心梗，并设计短篇小说剧情情节，要求:语言简洁，精炼
    `
    $.copyToClipboard(prompt)
  }

  const genStoryOutline = () => {
    const prompt = `
    生成故事梗概要素，包括下列内容：核心设定，主角，核心冲突，主要情节点，主题，基调
    `
    $.copyToClipboard(prompt)
  }


  const genNovel= () => {
    const prompt = `
    基于故事梗概要素创作小说正文
    `
    $.copyToClipboard(prompt)
  }

  const copyArticle = () => {
    let code = `
      function fallbackCopyToClipboard(text) {
        const textarea = document.createElement('textarea');
        textarea.value = text;
        textarea.style.position = 'fixed';
        document.body.appendChild(textarea);
        textarea.focus();
        textarea.select();
        try {
          document.execCommand('copy');
          console.log('复制成功');
        } catch (err) {
          console.error('复制失败:', err);
        } finally {
          document.body.removeChild(textarea);
        }
      }

      txt = document.querySelector('#board > article').innerText
      fallbackCopyToClipboard(txt)

      // navigator.clipboard.writeText(txt);

    `

    $.copyToClipboard(code)
  }

  const introBook = ()=>{
    let prompt = `
      详细介绍这本书：${txtVal}
    `
    $.copyToClipboard(prompt)
  }

  const extracPrompt = ()=>{
    let prompt = `
      请分析并解释以下提示词：
“”“
      ${txtVal}
”“”
    `
    $.copyToClipboard(prompt)
  }
  return (
    <>
      {/* 触发器按钮 */}
      <span onClick={show} style={{ cursor: 'pointer' }}>
        {trigger}
      </span>

      <Modal
        title={title}
        visible={visible}
        onCancel={hide}
        width={width}
        footer={null}
        destroyOnClose
        {...rest}
      >
        {typeof children === 'function' ? children({ show, hide }) : 
        <div>
          <Button onClick={onClick}>核心梗</Button>
          <Button onClick={emotional_curve}>情绪曲线</Button>
          <Button onClick={genPlot}>剧情</Button>
          <Button onClick={genShortPlot}>短篇情节</Button>
          <Button onClick={genStoryOutline}>故事梗概</Button>
          <Button onClick={genNovel}>创作正文</Button>
          <Button onClick={introBook}>介绍本书</Button>
          <Button onClick={extracPrompt}>分析提示词</Button>
          <Button onClick={()=>{window.open('https://onehu.xyz/')}}>我不是盐神</Button>

          <Button onClick={copyArticle}>cpArticle</Button>
          <Button onClick={()=>{window.open('https://www.coze.cn/store/agent/7534241735980351539?bot_id=true&bid=6h3o2glbs1g0r')}}>tts</Button>

          <Button onClick={()=>{window.open('https://v0zjsnf7n6w.feishu.cn/drive/folder/KTEMfrRKql23iddNTOSc58tFnWc')}}>feishu小说</Button>

          <Button onClick={()=>{window.open('https://www.kimi.com/')}}>kimi</Button>
          <Button onClick={()=>{window.open('https://chat.deepseek.com/')}}>deepseek</Button>

          <Input.TextArea
            value={txtVal}
            rows={8}
            onChange={(e) => onChange && onChange(e.target.value)}
            placeholder="请输入内容"
          />
      </div>        
        }
      </Modal>
    </>
  );
}